﻿using System.Windows.Forms;
using csvmb.contracts.datacontracts;
using NUnit.Framework;

namespace csvmb.gui.tests
{
    [TestFixture]
    public class Class1
    {
        [Test, Explicit, RequiresSTA]
        public void Display() {
            var gui = new Gui();

            var ds1 = new Datensatz { Spaltenwerte = new[] { "zeile1.1", "zeile1.2", "zeile1.3" } };
            var ds2 = new Datensatz { Spaltenwerte = new[] { "zeile2.1", "zeile2.2", "zeile2.3" } };
            var viewmodel = new ViewModel();

            viewmodel.Ausschnitt = new Ausschnitt(new[] {"spalte1", "spalte2", "spalte3"}, new[] {ds1, ds2});
            viewmodel.Ausschnittanzahl = 1;
            viewmodel.Ausschnittsnummer = 1;

            gui.Zeige_ViewModel(viewmodel);
            gui.Run(new string[0]);
        }

        [Test, Explicit, RequiresSTA]
        public void Mehrfaches_Zeige_ViewModel() {
            var gui = new Gui();

            var ds1 = new Datensatz { Spaltenwerte = new[] { "zeile1.1", "zeile1.2", "zeile1.3" } };
            var ds2 = new Datensatz { Spaltenwerte = new[] { "zeile2.1", "zeile2.2", "zeile2.3" } };
            var viewmodel = new ViewModel();

            viewmodel.Ausschnitt = new Ausschnitt(new[] {"spalte1", "spalte2", "spalte3"}, new[] {ds1, ds2});
            viewmodel.Ausschnittanzahl = 1;
            viewmodel.Ausschnittsnummer = 1;

            gui.Zeige_ViewModel(viewmodel);
            gui.Zeige_ViewModel(viewmodel);
            gui.Run(new string[0]);
        }

        [Test, Explicit, RequiresSTA]
        public void Spaltenbreite_hängt_von_Spaltenwerten_und_Header_ab() {
            var gui = new Gui();

            var ds1 = new Datensatz {Spaltenwerte = new[] {"Pumuckl", "Meister Eder"}};

            var viewmodel = new ViewModel();
            viewmodel.Ausschnitt = new Ausschnitt(new[] { "spalte1", "spalte2" }, new[] { ds1 });

            gui.Zeige_ViewModel(viewmodel);

            gui.Run(new string[0]);
        }

        [Test, Explicit, RequiresSTA]
        public void Datei_öffnen_Event() {
            var gui = new Gui();
            gui.Datei_Oeffnen += tuple => MessageBox.Show("Dateiname=" + tuple.Item1 + ", Ausschnittgröße=" + tuple.Item2);
            gui.Run(new[] {""});
        }

        [Test, Explicit, RequiresSTA]
        public void Blaettern_Event()
        {
            var gui = new Gui();
            gui.Blaettern += tuple => MessageBox.Show("Dateiname=" + tuple.Item1 + ", Ausschnittgröße=" + tuple.Item2);
            gui.Run(new[] { "" });
        }
    }
}